home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / amidar.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  30KB  |  774 lines

  1. /***************************************************************************
  2.  
  3. Amidar memory map (preliminary)
  4.  
  5. 0000-3fff ROM (Amidar US version and Turtles: 0000-4fff)
  6. 8000-87ff RAM
  7. 9000-93ff Video RAM
  8. 9800-983f Screen attributes
  9. 9840-985f sprites
  10.  
  11. read:
  12. a800      watchdog reset
  13. b000      IN0
  14. b010      IN1
  15. b020      IN2
  16. b820      DSW (not Turtles)
  17. see the input_ports definition below for details on the input bits
  18.  
  19. write:
  20. a008      interrupt enable
  21. a010/a018 flip screen X & Y (I don't know which is which)
  22. a030      coin counter A
  23. a038      coin counter B
  24. b800      To AY-3-8910 port A (commands for the audio CPU)
  25. b810      bit 3 = interrupt trigger on audio CPU
  26.  
  27.  
  28. SOUND BOARD:
  29. 0000-1fff ROM
  30. 8000-83ff RAM
  31.  
  32. write:
  33. 9000      ?
  34. 9080      ?
  35.  
  36. I/0 ports:
  37. read:
  38. 20      8910 #2  read
  39. 80      8910 #1  read
  40.  
  41. write
  42. 10      8910 #2  control
  43. 20      8910 #2  write
  44. 40      8910 #1  control
  45. 80      8910 #1  write
  46.  
  47. interrupts:
  48. interrupt mode 1 triggered by the main CPU
  49.  
  50. ***************************************************************************/
  51.  
  52. #include "driver.h"
  53. #include "vidhrdw/generic.h"
  54.  
  55.  
  56.  
  57. extern unsigned char *amidar_attributesram;
  58. void amidar_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  59. WRITE_HANDLER( amidar_flipx_w );
  60. WRITE_HANDLER( amidar_flipy_w );
  61. WRITE_HANDLER( amidar_attributes_w );
  62. void amidar_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  63.  
  64. READ_HANDLER( scramble_portB_r );
  65. WRITE_HANDLER( scramble_sh_irqtrigger_w );
  66.  
  67. WRITE_HANDLER( amidar_coina_w )
  68. {
  69.     coin_counter_w (0, data);
  70.     coin_counter_w (0, 0);
  71. }
  72.  
  73. WRITE_HANDLER( amidar_coinb_w )
  74. {
  75.     coin_counter_w (1, data);
  76.     coin_counter_w (1, 0);
  77. }
  78.  
  79. static struct MemoryReadAddress amidar_readmem[] =
  80. {
  81.     { 0x0000, 0x4fff, MRA_ROM },
  82.     { 0x8000, 0x87ff, MRA_RAM },
  83.     { 0x9000, 0x93ff, MRA_RAM },
  84.     { 0x9800, 0x985f, MRA_RAM },
  85.     { 0xa800, 0xa800, watchdog_reset_r },
  86.     { 0xb000, 0xb000, input_port_0_r },    /* IN0 */
  87.     { 0xb010, 0xb010, input_port_1_r },    /* IN1 */
  88.     { 0xb020, 0xb020, input_port_2_r },    /* IN2 */
  89.     { 0xb820, 0xb820, input_port_3_r },    /* DSW */
  90.     { -1 }    /* end of table */
  91. };
  92.  
  93. static struct MemoryWriteAddress writemem[] =
  94. {
  95.     { 0x0000, 0x4fff, MWA_ROM },
  96.     { 0x8000, 0x87ff, MWA_RAM },
  97.     { 0x9000, 0x93ff, videoram_w, &videoram, &videoram_size },
  98.     { 0x9800, 0x983f, amidar_attributes_w, &amidar_attributesram },
  99.     { 0x9840, 0x985f, MWA_RAM, &spriteram, &spriteram_size },
  100.     { 0x9860, 0x987f, MWA_NOP },
  101.     { 0xa008, 0xa008, interrupt_enable_w },
  102.     { 0xa010, 0xa010, amidar_flipx_w },
  103.     { 0xa018, 0xa018, amidar_flipy_w },
  104.     { 0xa030, 0xa030, amidar_coina_w },
  105.     { 0xa038, 0xa038, amidar_coinb_w },
  106.     { 0xb800, 0xb800, soundlatch_w },
  107.     { 0xb810, 0xb810, scramble_sh_irqtrigger_w },
  108.     { -1 }    /* end of table */
  109. };
  110.  
  111.  
  112.  
  113. static struct MemoryReadAddress sound_readmem[] =
  114. {
  115.     { 0x0000, 0x1fff, MRA_ROM },
  116.     { 0x8000, 0x83ff, MRA_RAM },
  117.     { -1 }    /* end of table */
  118. };
  119.  
  120. static struct MemoryWriteAddress sound_writemem[] =
  121. {
  122.     { 0x0000, 0x1fff, MWA_ROM },
  123.     { 0x8000, 0x83ff, MWA_RAM },
  124. //    { 0x9000, 0x9000, MWA_NOP },
  125. //    { 0x9080, 0x9080, MWA_NOP },
  126.     { -1 }    /* end of table */
  127. };
  128.  
  129.  
  130.  
  131. static struct IOReadPort sound_readport[] =
  132. {
  133.     { 0x80, 0x80, AY8910_read_port_0_r },
  134.     { 0x20, 0x20, AY8910_read_port_1_r },
  135.     { -1 }    /* end of table */
  136. };
  137.  
  138. static struct IOWritePort sound_writeport[] =
  139. {
  140.     { 0x40, 0x40, AY8910_control_port_0_w },
  141.     { 0x80, 0x80, AY8910_write_port_0_w },
  142.     { 0x10, 0x10, AY8910_control_port_1_w },
  143.     { 0x20, 0x20, AY8910_write_port_1_w },
  144.     { -1 }    /* end of table */
  145. };
  146.  
  147.  
  148.  
  149. INPUT_PORTS_START( amidar )
  150.     PORT_START    /* IN0 */
  151.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY | IPF_COCKTAIL )
  152.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably space for button 2 */
  153.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
  154.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
  155.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  156.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
  157.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
  158.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  159.  
  160.     PORT_START    /* IN1 */
  161.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  162.     PORT_DIPSETTING(    0x03, "3" )
  163.     PORT_DIPSETTING(    0x02, "4" )
  164.     PORT_DIPSETTING(    0x01, "5" )
  165.     PORT_BITX (0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "255", IP_KEY_NONE, IP_JOY_NONE )
  166.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably space for player 2 button 2 */
  167.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  168.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL )
  169.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY | IPF_COCKTAIL )
  170.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
  171.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  172.  
  173.     PORT_START    /* IN2 */
  174.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY | IPF_COCKTAIL )
  175.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
  176.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  177.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  178.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Bonus_Life ) )
  179.     PORT_DIPSETTING(    0x00, "30000 70000" )
  180.     PORT_DIPSETTING(    0x04, "50000 80000" )
  181.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
  182.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  183.     PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
  184.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
  185.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  186.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  187.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  188.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
  189.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  190.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  191.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  192.  
  193.     PORT_START    /* DSW */
  194.     PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) )
  195.     PORT_DIPSETTING(    0x04, DEF_STR( 4C_1C ) )
  196.     PORT_DIPSETTING(    0x0a, DEF_STR( 3C_1C ) )
  197.     PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
  198.     PORT_DIPSETTING(    0x02, DEF_STR( 3C_2C ) )
  199.     PORT_DIPSETTING(    0x08, DEF_STR( 4C_3C ) )
  200.     PORT_DIPSETTING(    0x0f, DEF_STR( 1C_1C ) )
  201.     PORT_DIPSETTING(    0x0c, DEF_STR( 3C_4C ) )
  202.     PORT_DIPSETTING(    0x0e, DEF_STR( 2C_3C ) )
  203.     PORT_DIPSETTING(    0x07, DEF_STR( 1C_2C ) )
  204.     PORT_DIPSETTING(    0x06, DEF_STR( 2C_5C ) )
  205.     PORT_DIPSETTING(    0x0b, DEF_STR( 1C_3C ) )
  206.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_4C ) )
  207.     PORT_DIPSETTING(    0x0d, DEF_STR( 1C_5C ) )
  208.     PORT_DIPSETTING(    0x05, DEF_STR( 1C_6C ) )
  209.     PORT_DIPSETTING(    0x09, DEF_STR( 1C_7C ) )
  210.     PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
  211.     PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) )
  212.     PORT_DIPSETTING(    0x40, DEF_STR( 4C_1C ) )
  213.     PORT_DIPSETTING(    0xa0, DEF_STR( 3C_1C ) )
  214.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  215.     PORT_DIPSETTING(    0x20, DEF_STR( 3C_2C ) )
  216.     PORT_DIPSETTING(    0x80, DEF_STR( 4C_3C ) )
  217.     PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) )
  218.     PORT_DIPSETTING(    0xc0, DEF_STR( 3C_4C ) )
  219.     PORT_DIPSETTING(    0xe0, DEF_STR( 2C_3C ) )
  220.     PORT_DIPSETTING(    0x70, DEF_STR( 1C_2C ) )
  221.     PORT_DIPSETTING(    0x60, DEF_STR( 2C_5C ) )
  222.     PORT_DIPSETTING(    0xb0, DEF_STR( 1C_3C ) )
  223.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_4C ) )
  224.     PORT_DIPSETTING(    0xd0, DEF_STR( 1C_5C ) )
  225.     PORT_DIPSETTING(    0x50, DEF_STR( 1C_6C ) )
  226.     PORT_DIPSETTING(    0x90, DEF_STR( 1C_7C ) )
  227.     PORT_DIPSETTING(    0x00, "Disable All Coins" )
  228. INPUT_PORTS_END
  229.  
  230. INPUT_PORTS_START( amidaro )
  231.     PORT_START    /* IN0 */
  232.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY | IPF_COCKTAIL )
  233.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably space for button 2 */
  234.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
  235.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
  236.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  237.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
  238.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
  239.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  240.  
  241.     PORT_START    /* IN1 */
  242.     PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )
  243.     PORT_DIPSETTING(    0x03, "1" )
  244.     PORT_DIPSETTING(    0x02, "2" )
  245.     PORT_DIPSETTING(    0x01, "3" )
  246.     PORT_DIPSETTING(    0x00, "4" )
  247.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably space for player 2 button 2 */
  248.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  249.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL )
  250.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY | IPF_COCKTAIL )
  251.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
  252.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  253.  
  254.     PORT_START    /* IN2 */
  255.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY | IPF_COCKTAIL )
  256.     PORT_DIPNAME( 0x02, 0x00, "Level Progression" )
  257.     PORT_DIPSETTING(    0x00, "Slow" )
  258.     PORT_DIPSETTING(    0x02, "Fast" )
  259.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Bonus_Life ) )
  260.     PORT_DIPSETTING(    0x00, "30000 70000" )
  261.     PORT_DIPSETTING(    0x04, "50000 80000" )
  262.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
  263.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  264.     PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
  265.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
  266.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  267.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  268.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  269.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
  270.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  271.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  272.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  273.  
  274.     PORT_START    /* DSW */
  275.     PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) )
  276.     PORT_DIPSETTING(    0x04, DEF_STR( 4C_1C ) )
  277.     PORT_DIPSETTING(    0x0a, DEF_STR( 3C_1C ) )
  278.     PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
  279.     PORT_DIPSETTING(    0x02, DEF_STR( 3C_2C ) )
  280.     PORT_DIPSETTING(    0x08, DEF_STR( 4C_3C ) )
  281.     PORT_DIPSETTING(    0x0f, DEF_STR( 1C_1C ) )
  282.     PORT_DIPSETTING(    0x0c, DEF_STR( 3C_4C ) )
  283.     PORT_DIPSETTING(    0x0e, DEF_STR( 2C_3C ) )
  284.     PORT_DIPSETTING(    0x07, DEF_STR( 1C_2C ) )
  285.     PORT_DIPSETTING(    0x06, DEF_STR( 2C_5C ) )
  286.     PORT_DIPSETTING(    0x0b, DEF_STR( 1C_3C ) )
  287.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_4C ) )
  288.     PORT_DIPSETTING(    0x0d, DEF_STR( 1C_5C ) )
  289.     PORT_DIPSETTING(    0x05, DEF_STR( 1C_6C ) )
  290.     PORT_DIPSETTING(    0x09, DEF_STR( 1C_7C ) )
  291.     PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
  292.     PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) )
  293.     PORT_DIPSETTING(    0x40, DEF_STR( 4C_1C ) )
  294.     PORT_DIPSETTING(    0xa0, DEF_STR( 3C_1C ) )
  295.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  296.     PORT_DIPSETTING(    0x20, DEF_STR( 3C_2C ) )
  297.     PORT_DIPSETTING(    0x80, DEF_STR( 4C_3C ) )
  298.     PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) )
  299.     PORT_DIPSETTING(    0xc0, DEF_STR( 3C_4C ) )
  300.     PORT_DIPSETTING(    0xe0, DEF_STR( 2C_3C ) )
  301.     PORT_DIPSETTING(    0x70, DEF_STR( 1C_2C ) )
  302.     PORT_DIPSETTING(    0x60, DEF_STR( 2C_5C ) )
  303.     PORT_DIPSETTING(    0xb0, DEF_STR( 1C_3C ) )
  304.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_4C ) )
  305.     PORT_DIPSETTING(    0xd0, DEF_STR( 1C_5C ) )
  306.     PORT_DIPSETTING(    0x50, DEF_STR( 1C_6C ) )
  307.     PORT_DIPSETTING(    0x90, DEF_STR( 1C_7C ) )
  308.     PORT_DIPSETTING(    0x00, "Disable All Coins" )
  309. INPUT_PORTS_END
  310.  
  311. /* absolutely identical to amidar, the only difference is the BONUS dip switch */
  312. INPUT_PORTS_START( amidarjp )
  313.     PORT_START    /* IN0 */
  314.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY | IPF_COCKTAIL )
  315.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably space for button 2 */
  316.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
  317.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
  318.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  319.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
  320.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
  321.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  322.  
  323.     PORT_START    /* IN1 */
  324.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  325.     PORT_DIPSETTING(    0x03, "3" )
  326.     PORT_DIPSETTING(    0x02, "4" )
  327.     PORT_DIPSETTING(    0x01, "5" )
  328.     PORT_BITX (0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "255", IP_KEY_NONE, IP_JOY_NONE )
  329.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably space for player 2 button 2 */
  330.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  331.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL )
  332.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY | IPF_COCKTAIL )
  333.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
  334.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  335.  
  336.     PORT_START    /* IN2 */
  337.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY | IPF_COCKTAIL )
  338.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
  339.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  340.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  341.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Bonus_Life ) )
  342.     PORT_DIPSETTING(    0x00, "30000 50000" )
  343.     PORT_DIPSETTING(    0x04, "50000 50000" )
  344.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
  345.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  346.     PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
  347.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
  348.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  349.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  350.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  351.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
  352.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  353.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  354.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  355.  
  356.     PORT_START    /* DSW */
  357.     PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) )
  358.     PORT_DIPSETTING(    0x04, DEF_STR( 4C_1C ) )
  359.     PORT_DIPSETTING(    0x0a, DEF_STR( 3C_1C ) )
  360.     PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
  361.     PORT_DIPSETTING(    0x02, DEF_STR( 3C_2C ) )
  362.     PORT_DIPSETTING(    0x08, DEF_STR( 4C_3C ) )
  363.     PORT_DIPSETTING(    0x0f, DEF_STR( 1C_1C ) )
  364.     PORT_DIPSETTING(    0x0c, DEF_STR( 3C_4C ) )
  365.     PORT_DIPSETTING(    0x0e, DEF_STR( 2C_3C ) )
  366.     PORT_DIPSETTING(    0x07, DEF_STR( 1C_2C ) )
  367.     PORT_DIPSETTING(    0x06, DEF_STR( 2C_5C ) )
  368.     PORT_DIPSETTING(    0x0b, DEF_STR( 1C_3C ) )
  369.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_4C ) )
  370.     PORT_DIPSETTING(    0x0d, DEF_STR( 1C_5C ) )
  371.     PORT_DIPSETTING(    0x05, DEF_STR( 1C_6C ) )
  372.     PORT_DIPSETTING(    0x09, DEF_STR( 1C_7C ) )
  373.     PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
  374.     PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) )
  375.     PORT_DIPSETTING(    0x40, DEF_STR( 4C_1C ) )
  376.     PORT_DIPSETTING(    0xa0, DEF_STR( 3C_1C ) )
  377.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  378.     PORT_DIPSETTING(    0x20, DEF_STR( 3C_2C ) )
  379.     PORT_DIPSETTING(    0x80, DEF_STR( 4C_3C ) )
  380.     PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) )
  381.     PORT_DIPSETTING(    0xc0, DEF_STR( 3C_4C ) )
  382.     PORT_DIPSETTING(    0xe0, DEF_STR( 2C_3C ) )
  383.     PORT_DIPSETTING(    0x70, DEF_STR( 1C_2C ) )
  384.     PORT_DIPSETTING(    0x60, DEF_STR( 2C_5C ) )
  385.     PORT_DIPSETTING(    0xb0, DEF_STR( 1C_3C ) )
  386.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_4C ) )
  387.     PORT_DIPSETTING(    0xd0, DEF_STR( 1C_5C ) )
  388.     PORT_DIPSETTING(    0x50, DEF_STR( 1C_6C ) )
  389.     PORT_DIPSETTING(    0x90, DEF_STR( 1C_7C ) )
  390.     PORT_DIPSETTING(    0x00, "Disable All Coins" )
  391. INPUT_PORTS_END
  392.  
  393. /* similar to Amidar, dip switches are different and port 3, which in Amidar */
  394. /* selects coins per credit, is not used. */
  395. INPUT_PORTS_START( turtles )
  396.     PORT_START    /* IN0 */
  397.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
  398.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably space for button 2 */
  399.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
  400.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
  401.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  402.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
  403.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
  404.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  405.  
  406.     PORT_START    /* IN1 */
  407.     PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )
  408.     PORT_DIPSETTING(    0x00, "2" )
  409.     PORT_DIPSETTING(    0x01, "3" )
  410.     PORT_DIPSETTING(    0x02, "4" )
  411.     PORT_BITX (0,       0x03, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "126", IP_KEY_NONE, IP_JOY_NONE )
  412.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably space for player 2 button 2 */
  413.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  414.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  415.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
  416.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
  417.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  418.  
  419.     PORT_START    /* IN2 */
  420.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
  421.     PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) )
  422.     PORT_DIPSETTING(    0x00, "A 1/1 B 2/1 C 1/1" )
  423.     PORT_DIPSETTING(    0x02, "A 1/2 B 1/1 C 1/2" )
  424.     PORT_DIPSETTING(    0x04, "A 1/3 B 3/1 C 1/3" )
  425.     PORT_DIPSETTING(    0x06, "A 1/4 B 4/1 C 1/4" )
  426.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
  427.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  428.     PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
  429.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
  430.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  431.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  432.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  433.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
  434.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  435.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  436.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  437. INPUT_PORTS_END
  438.  
  439. /* same as Turtles, but dip switches are different. */
  440. INPUT_PORTS_START( turpin )
  441.     PORT_START    /* IN0 */
  442.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY | IPF_COCKTAIL )
  443.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably space for button 2 */
  444.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
  445.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
  446.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  447.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
  448.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
  449.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  450.  
  451.     PORT_START    /* IN1 */
  452.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  453.     PORT_DIPSETTING(    0x00, "2" )
  454.     PORT_DIPSETTING(    0x01, "4" )
  455.     PORT_DIPSETTING(    0x02, "6" )
  456.     PORT_BITX (0,       0x03, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "126", IP_KEY_NONE, IP_JOY_NONE )
  457.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably space for player 2 button 2 */
  458.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  459.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL )
  460.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY | IPF_COCKTAIL )
  461.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
  462.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  463.  
  464.     PORT_START    /* IN2 */
  465.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY | IPF_COCKTAIL )
  466.     PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) )
  467.     PORT_DIPSETTING(    0x06, DEF_STR( 4C_1C ) )
  468.     PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
  469.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  470.     PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
  471.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
  472.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  473.     PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
  474.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
  475.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  476.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  477.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  478.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
  479.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  480.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  481.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  482. INPUT_PORTS_END
  483.  
  484. /* similar to Turtles, lives are different */
  485. INPUT_PORTS_START( 600 )
  486.     PORT_START    /* IN0 */
  487.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
  488.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably space for button 2 */
  489.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
  490.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
  491.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  492.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
  493.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
  494.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  495.  
  496.     PORT_START    /* IN1 */
  497.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  498.     PORT_DIPSETTING(    0x00, "3" )
  499.     PORT_DIPSETTING(    0x01, "4" )
  500.     PORT_DIPSETTING(    0x02, "5" )
  501.     PORT_BITX (0,       0x03, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "126", IP_KEY_NONE, IP_JOY_NONE )
  502.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably space for player 2 button 2 */
  503.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  504.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  505.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
  506.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
  507.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  508.  
  509.     PORT_START    /* IN2 */
  510.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
  511.     PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) )
  512.     PORT_DIPSETTING(    0x00, "A 1/1 B 2/1 C 1/1" )
  513.     PORT_DIPSETTING(    0x02, "A 1/2 B 1/1 C 1/2" )
  514.     PORT_DIPSETTING(    0x04, "A 1/3 B 3/1 C 1/3" )
  515.     PORT_DIPSETTING(    0x06, "A 1/4 B 4/1 C 1/4" )
  516.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
  517.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  518.     PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
  519.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
  520.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  521.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  522.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  523.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
  524.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  525.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  526.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  527. INPUT_PORTS_END
  528.  
  529.  
  530.  
  531. static struct GfxLayout charlayout =
  532. {
  533.     8,8,    /* 8*8 characters */
  534.     256,    /* 256 characters */
  535.     2,    /* 2 bits per pixel */
  536.     { 0, 256*8*8 },    /* the two bitplanes are separated */
  537.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  538.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  539.     8*8    /* every char takes 8 consecutive bytes */
  540. };
  541. static struct GfxLayout spritelayout =
  542. {
  543.     16,16,    /* 16*16 sprites */
  544.     64,    /* 64 sprites */
  545.     2,    /* 2 bits per pixel */
  546.     { 0, 64*16*16 },    /* the two bitplanes are separated */
  547.     { 0, 1, 2, 3, 4, 5, 6, 7,
  548.             8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
  549.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  550.             16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
  551.     32*8    /* every sprite takes 32 consecutive bytes */
  552. };
  553.  
  554. static struct GfxDecodeInfo gfxdecodeinfo[] =
  555. {
  556.     { REGION_GFX1, 0x0000, &charlayout,     0, 8 },
  557.     { REGION_GFX1, 0x0000, &spritelayout,   0, 8 },
  558.     { -1 } /* end of array */
  559. };
  560.  
  561.  
  562.  
  563. static struct AY8910interface ay8910_interface =
  564. {
  565.     2,    /* 2 chips */
  566.     14318000/8,    /* 1.78975 Mhz */
  567.     { MIXERG(30,MIXER_GAIN_2x,MIXER_PAN_CENTER), MIXERG(30,MIXER_GAIN_2x,MIXER_PAN_CENTER) },
  568.     { soundlatch_r },
  569.     { scramble_portB_r },
  570.     { 0 },
  571.     { 0 }
  572. };
  573.  
  574.  
  575.  
  576. static struct MachineDriver machine_driver_amidar =
  577. {
  578.     /* basic machine hardware */
  579.     {
  580.         {
  581.             CPU_Z80,
  582.             18432000/6,    /* 3.072 Mhz */
  583.             amidar_readmem,writemem,0,0,
  584.             nmi_interrupt,1
  585.         },
  586.         {
  587.             CPU_Z80 | CPU_AUDIO_CPU,
  588.             14318000/8,    /* 1.78975 Mhz */
  589.             sound_readmem,sound_writemem,sound_readport,sound_writeport,
  590.             ignore_interrupt,1    /* interrupts are triggered by the main CPU */
  591.         }
  592.     },
  593.     60, 2500,    /* frames per second, vblank duration */
  594.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  595.     0,
  596.  
  597.     /* video hardware */
  598.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  599.     gfxdecodeinfo,
  600.     32,32,
  601.     amidar_vh_convert_color_prom,
  602.  
  603.     VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY,
  604.     0,
  605.     generic_vh_start,
  606.     generic_vh_stop,
  607.     amidar_vh_screenrefresh,
  608.  
  609.     /* sound hardware */
  610.     0,0,0,0,
  611.     {
  612.         {
  613.             SOUND_AY8910,
  614.             &ay8910_interface
  615.         }
  616.     }
  617. };
  618.  
  619.  
  620.  
  621. /***************************************************************************
  622.  
  623.   Game driver(s)
  624.  
  625. ***************************************************************************/
  626.  
  627. ROM_START( amidar )
  628.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  629.     ROM_LOAD( "amidar.2c",    0x0000, 0x1000, 0xc294bf27 )
  630.     ROM_LOAD( "amidar.2e",    0x1000, 0x1000, 0xe6e96826 )
  631.     ROM_LOAD( "amidar.2f",    0x2000, 0x1000, 0x3656be6f )
  632.     ROM_LOAD( "amidar.2h",    0x3000, 0x1000, 0x1be170bd )
  633.  
  634.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  635.     ROM_LOAD( "amidar.5c",    0x0000, 0x1000, 0xc4b66ae4 )
  636.     ROM_LOAD( "amidar.5d",    0x1000, 0x1000, 0x806785af )
  637.  
  638.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  639.     ROM_LOAD( "amidar.5f",    0x0000, 0x0800, 0x5e51e84d )
  640.     ROM_LOAD( "amidar.5h",    0x0800, 0x0800, 0x2f7f1c30 )
  641.  
  642.     ROM_REGION( 0x0020, REGION_PROMS )
  643.     ROM_LOAD( "amidar.clr",   0x0000, 0x0020, 0xf940dcc3 )
  644. ROM_END
  645.  
  646. ROM_START( amidaru )
  647.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  648.     ROM_LOAD( "amidarus.2c",  0x0000, 0x1000, 0x951e0792 )
  649.     ROM_LOAD( "amidarus.2e",  0x1000, 0x1000, 0xa1a3a136 )
  650.     ROM_LOAD( "amidarus.2f",  0x2000, 0x1000, 0xa5121bf5 )
  651.     ROM_LOAD( "amidarus.2h",  0x3000, 0x1000, 0x051d1c7f )
  652.     ROM_LOAD( "amidarus.2j",  0x4000, 0x1000, 0x351f00d5 )
  653.  
  654.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  655.     ROM_LOAD( "amidarus.5c",  0x0000, 0x1000, 0x8ca7b750 )
  656.     ROM_LOAD( "amidarus.5d",  0x1000, 0x1000, 0x9b5bdc0a )
  657.  
  658.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  659.     ROM_LOAD( "amidarus.5f",  0x0000, 0x0800, 0x2cfe5ede )
  660.     ROM_LOAD( "amidarus.5h",  0x0800, 0x0800, 0x57c4fd0d )
  661.  
  662.     ROM_REGION( 0x0020, REGION_PROMS )
  663.     ROM_LOAD( "amidar.clr",   0x0000, 0x0020, 0xf940dcc3 )
  664. ROM_END
  665.  
  666. ROM_START( amidaro )
  667.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  668.     ROM_LOAD( "107.2cd",      0x0000, 0x1000, 0xc52536be )
  669.     ROM_LOAD( "108.2fg",      0x1000, 0x1000, 0x38538b98 )
  670.     ROM_LOAD( "109.2fg",      0x2000, 0x1000, 0x69907f0f )
  671.     ROM_LOAD( "110.2h",       0x3000, 0x1000, 0xba149a93 )
  672.     ROM_LOAD( "111.2j",       0x4000, 0x1000, 0x20d01c2e )
  673.  
  674.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  675.     ROM_LOAD( "amidarus.5c",  0x0000, 0x1000, 0x8ca7b750 )
  676.     ROM_LOAD( "amidarus.5d",  0x1000, 0x1000, 0x9b5bdc0a )
  677.  
  678.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  679.     ROM_LOAD( "amidarus.5f",  0x0000, 0x0800, 0x2cfe5ede )
  680.     ROM_LOAD( "113.5h",       0x0800, 0x0800, 0xbcdce168 )  /* The letter 'S' is slightly different */
  681.  
  682.     ROM_REGION( 0x0020, REGION_PROMS )
  683.     ROM_LOAD( "amidar.clr",   0x0000, 0x0020, 0xf940dcc3 )
  684. ROM_END
  685.  
  686. ROM_START( amigo )
  687.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  688.     ROM_LOAD( "2732.a1",      0x0000, 0x1000, 0x930dc856 )
  689.     ROM_LOAD( "2732.a2",      0x1000, 0x1000, 0x66282ff5 )
  690.     ROM_LOAD( "2732.a3",      0x2000, 0x1000, 0xe9d3dc76 )
  691.     ROM_LOAD( "2732.a4",      0x3000, 0x1000, 0x4a4086c9 )
  692.  
  693.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  694.     ROM_LOAD( "amidarus.5c",  0x0000, 0x1000, 0x8ca7b750 )
  695.     ROM_LOAD( "amidarus.5d",  0x1000, 0x1000, 0x9b5bdc0a )
  696.  
  697.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  698.     ROM_LOAD( "2716.a6",      0x0000, 0x0800, 0x2082ad0a )
  699.     ROM_LOAD( "2716.a5",      0x0800, 0x0800, 0x3029f94f )
  700.  
  701.     ROM_REGION( 0x0020, REGION_PROMS )
  702.     ROM_LOAD( "amidar.clr",   0x0000, 0x0020, 0xf940dcc3 )
  703. ROM_END
  704.  
  705. ROM_START( turtles )
  706.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  707.     ROM_LOAD( "turt_vid.2c",  0x0000, 0x1000, 0xec5e61fb )
  708.     ROM_LOAD( "turt_vid.2e",  0x1000, 0x1000, 0xfd10821e )
  709.     ROM_LOAD( "turt_vid.2f",  0x2000, 0x1000, 0xddcfc5fa )
  710.     ROM_LOAD( "turt_vid.2h",  0x3000, 0x1000, 0x9e71696c )
  711.     ROM_LOAD( "turt_vid.2j",  0x4000, 0x1000, 0xfcd49fef )
  712.  
  713.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  714.     ROM_LOAD( "turt_snd.5c",  0x0000, 0x1000, 0xf0c30f9a )
  715.     ROM_LOAD( "turt_snd.5d",  0x1000, 0x1000, 0xaf5fc43c )
  716.  
  717.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  718.     ROM_LOAD( "turt_vid.5h",  0x0000, 0x0800, 0xe5999d52 )
  719.     ROM_LOAD( "turt_vid.5f",  0x0800, 0x0800, 0xc3ffd655 )
  720.  
  721.     ROM_REGION( 0x0020, REGION_PROMS )
  722.     ROM_LOAD( "turtles.clr",  0x0000, 0x0020, 0xf3ef02dd )
  723. ROM_END
  724.  
  725. ROM_START( turpin )
  726.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  727.     ROM_LOAD( "m1",           0x0000, 0x1000, 0x89177473 )
  728.     ROM_LOAD( "m2",           0x1000, 0x1000, 0x4c6ca5c6 )
  729.     ROM_LOAD( "m3",           0x2000, 0x1000, 0x62291652 )
  730.     ROM_LOAD( "turt_vid.2h",  0x3000, 0x1000, 0x9e71696c )
  731.     ROM_LOAD( "m5",           0x4000, 0x1000, 0x7d2600f2 )
  732.  
  733.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  734.     ROM_LOAD( "turt_snd.5c",  0x0000, 0x1000, 0xf0c30f9a )
  735.     ROM_LOAD( "turt_snd.5d",  0x1000, 0x1000, 0xaf5fc43c )
  736.  
  737.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  738.     ROM_LOAD( "turt_vid.5h",  0x0000, 0x0800, 0xe5999d52 )
  739.     ROM_LOAD( "turt_vid.5f",  0x0800, 0x0800, 0xc3ffd655 )
  740.  
  741.     ROM_REGION( 0x0020, REGION_PROMS )
  742.     ROM_LOAD( "turtles.clr",  0x0000, 0x0020, 0xf3ef02dd )
  743. ROM_END
  744.  
  745. ROM_START( 600 )
  746.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  747.     ROM_LOAD( "600_vid.2c",   0x0000, 0x1000, 0x8ee090ae )
  748.     ROM_LOAD( "600_vid.2e",   0x1000, 0x1000, 0x45bfaff2 )
  749.     ROM_LOAD( "600_vid.2f",   0x2000, 0x1000, 0x9f4c8ed7 )
  750.     ROM_LOAD( "600_vid.2h",   0x3000, 0x1000, 0xa92ef056 )
  751.     ROM_LOAD( "600_vid.2j",   0x4000, 0x1000, 0x6dadd72d )
  752.  
  753.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  754.     ROM_LOAD( "600_snd.5c",   0x0000, 0x1000, 0x1773c68e )
  755.     ROM_LOAD( "600_snd.5d",   0x1000, 0x1000, 0xa311b998 )
  756.  
  757.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  758.     ROM_LOAD( "600_vid.5h",   0x0000, 0x0800, 0x006c3d56 )
  759.     ROM_LOAD( "600_vid.5f",   0x0800, 0x0800, 0x7dbc0426 )
  760.  
  761.     ROM_REGION( 0x0020, REGION_PROMS )
  762.     ROM_LOAD( "turtles.clr",  0x0000, 0x0020, 0xf3ef02dd )
  763. ROM_END
  764.  
  765.  
  766.  
  767. GAME( 1981, amidar,  0,       amidar, amidarjp, 0, ROT90, "Konami", "Amidar" )
  768. GAME( 1982, amidaru, amidar,  amidar, amidar,   0, ROT90, "Konami (Stern license)", "Amidar (Stern)" )
  769. GAME( 1982, amidaro, amidar,  amidar, amidaro,  0, ROT90, "Konami (Olympia license)", "Amidar (Olympia)" )
  770. GAME( 1982, amigo,   amidar,  amidar, amidar,   0, ROT90, "bootleg", "Amigo" )
  771. GAME( 1981, turtles, 0,       amidar, turtles,  0, ROT90, "[Konami] (Stern license)", "Turtles" )
  772. GAME( 1981, turpin,  turtles, amidar, turpin,   0, ROT90, "[Konami] (Sega license)", "Turpin" )
  773. GAME( 1981, 600,     turtles, amidar, 600,      0, ROT90, "Konami", "600" )
  774.